package com.hygj.util;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.io.*;
import java.util.UUID;

/**
 * 图片上传 ---工具类
 * @author Administrator
 *
 */
public class FileUploadUtil {
	public static String uploadFile(MultipartFile imgFile, String dir, HttpSession session) throws IOException {
        //网站根目录
		//String filename = imgFile.getOriginalFilename();
		// 保存的目录，是固定目录，只能更改rootpath目录移动文件

		//转换成小写
		//获取时间戳
		String uuid  = UUID.randomUUID().toString();
		String saveFileName =  uuid + ".png";
		//基于网站根目录（保存在项目里的路径名称）
		String savePath = "sniper/file/";

		// 用户前台显示（转换成 backUrl来接收）
		String backUrl = savePath;

		// 组装真的url
		savePath = dir + savePath;
		// 创建file对象 savePath 可以为文件也可以为文件夹


		//打印保存的路径
		//System.out.println(fileDir.getAbsolutePath());
		// 检查文件夹是否存在， 如果fileDir表示的是一个目录则返回true

		savePath += saveFileName;
		backUrl += saveFileName;
        File fileDir = new File(savePath);
		    //【.getParentFile()】：的作用是获得父目录 【 .isDirectory()】:判断当前对象是否是一个文件夹
		    // 【.exists()】:判断当前文件对象是否在磁盘中存在
		    //判断当前对象是否是一个文件夹
        if (!fileDir.getParentFile().exists()) {
			            //获取父目录，并创建一个新文件夹
            boolean b = fileDir.getParentFile().mkdirs();
            System.out.println(b);
        }
        System.out.println(savePath);
		//如果文件不存在会自动创建
        FileOutputStream out = new FileOutputStream(savePath);
		//实体内容的输入流对象
		InputStream in = imgFile.getInputStream();

		byte[] buffer = new byte[1024];
		int len = 0;

		//只使用对象in的read()方法，逐个字节的读入数据，然后用对象in的write()这个字节输出
		while ((len = in.read(buffer)) != -1) {
			out.write(buffer, 0, len);
		}
		out.close();
		in.close();

		return backUrl;
	}

}
